草庐IT

c++ - 从命令行编译 Visual C++

全部标签

c - 如何从 Go 函数返回 C 指针?

我有疑问是否可以从C上的Go函数指针返回?例如main.c可以是:structopen_db_returndb_ptr=open_db(db_path);GoSlicebacket={"DB",2,2};GoSlicekey={"CONFIG",6,6};structget_value_returnval=get_value(db_ptr.r0,backet,key);close_db(db_ptr.r0);接下来是Go代码://exportopen_dbfuncopen_db(pathstring)(interface{},error){db,err:=db.Open(path,06

go - x/mobile/app 无法为 iOS 编译

您使用的是哪个版本的Go(go版本)?goversiongo1.9darwin/amd64XCodeVersion9.0(9A235)您使用的是什么操作系统和处理器架构(goenv)?GOARCH="amd64"GOBIN=""GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOOS="darwin"GOPATH="/users/sh.garatuev/go"GORACE=""GOROOT="/usr/local/go"GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"GCCGO="gccgo"CC="c

不能用宏包装 cgo 标志

我编写了一个Go程序来模拟按键操作。为此,我必须使用cgo和不同的C代码片段,具体取决于正在编译Go代码的操作系统。我编写的代码如下所示:packagekeyboard/*#include#ifdef__WIN32#cgoCFLAGS:-nostdlib#includevoidSetKey(uint16_tkey,uint8_tvalue){INPUTip;ip.type=INPUT_KEYBOARD;ip.ki.wScan=0;ip.ki.time=0;ip.ki.dwExtraInfo=0;ip.ki.wVk=key;if(value){ip.ki.dwFlags=0;}else{

go - 将 exec.CommandContext 与 sg_inq sys 命令和超时一起使用永远不会返回

我正在尝试在多路径设备(/dev/mapper/mpatha)上调用sg_inq。sg_inq向特定设备发送iScsi查询并提取一些数据。我正在使用go自己的exec.commandContext超时,如下所示:ctx,cancel:=context.WithTimeout(context.Background(),time.Duration(1000)*time.Millisecond)defercancel()cmd:=exec.CommandContext(ctx,"sg_inq","/dev/mapper/mpatha")err:=cmd.Run()cmd.Stdout=&st

c - 如何在没有定义 main() 的情况下让 cgo 构建目标文件?

我有一个完全用C编写的项目。我只需要调用一个必须用GO编写的函数。因此,我使用cgo构建C文件,然后我想使用生成的目标文件与我的主C项目链接。假设我有一个文件foo.go和一个函数funcHelloWorld()。我希望从我的C代码中执行此函数。所以我做了以下步骤#gotoolcgofoo.go#cd_obj&&gcc-c*.o现在我有两个文件:#_cgo_export.o_cgo_main.o但是,main()以某种方式在那里定义,我无法将这些目标文件与我的主项目(多个主项目)链接。我如何让cgo不放入虚拟main?还是我这样做完全错了?编辑我需要入口点在C中。其他人发布的建议要求入

go - 每当我使用 go 尝试任何命令时,输出都会说我的 go-build 已损坏且无法读取

无论何时我运行任何go命令(gohelp除外),输出都是这样的:mkdirC:\Users\LUCAS_~1\AppData\Local\Temp\go-build268335003:Thefileordirectoryiscorruptedandunreadable.我不确定为什么会这样,我试过重新启动,并暂时修复了它,但是在执行了几个命令后,这种情况又开始发生了。我不确定这是否有帮助,但我的用户名不是LUCAS_~1,而是Lucas_000。另外,我检查了我的Temp文件夹,似乎没有任何名为“go-build268335003”的东西。任何帮助将不胜感激,谢谢!

objective-c - cgo godefs 和 Objective-C

我通过CGoLang的包在GoLang上编写了一个包含Objective-C代码(调用一些OSXAPI)的程序,我需要从Go传递类型为T的变量代码到Objective-C代码,反之亦然。T是结构(或其他类型)。所以我需要在GoLang中创建兼容的(在内存布局方面)类型/变量,并通过unsafe.Pointer转换将其传递给Objective-C。对于通用C代码,我在这种情况下使用godefs,但我无法将godefs用于Objective-C。如果我尝试gotoolcgo-godefscgodefs.go//Thisis"cgodefs.go"filepackagetmp/*#cgoCF

json - 从 JSON 中的 JSON 数组中提取值(以及为什么不反射(reflect)和编译错误报告相同的类型)

我在用Go解码一些JSON时遇到问题。在下面的代码中,我希望能够从JSON(v数组(?)时,我得到错误:invalidoperation:v[0](typeinterface{}doesnotsupportindexing)。这就是让我使用reflect并查看变量类型的原因,如下所示,它是“[]interface{}”,即使我断言它是“界面{}”。值得注意的是,如果我将行q:=interface{}(v)变成q:=[]interface{}(v),我得到:无法将v(类型接口(interface){})转换为类型[]接口(interface){}:需要类型断言。我错过了什么?为什么ref

go - 是否可以捕获由外部命令设置的环境变量?

我有一个脚本(在Windows上)可以设置许多环境变量。我想在Go中执行这个脚本来为后续调用二进制文件设置环境变量。像这样:cmd1:=exec.Command("setup_env.bat")cmd.Run()//other_command.exereliesonenvironmentvariables//setbysetup_env.batcmd2:=exec.Command("some_binary.exe")cmd2.Env=cmd1.Envcmd2.Run()但是这不起作用,因为cmd1.Env在调用cmd1.Run()后为空(在cmd1中设置的环境变量似乎不会传播到cmd1

c - 将 cgo 与 typedef 变量一起使用

由于现有的库和速度,我正在创建一个项目,该项目使用我用C编写的密码学。尝试与Cgo交互时,我在使用C中创建的typedef时遇到了一些问题。下面是一个示例:typedefunsignedcharec_scalar[32];我能够成功创建ec_point变量,并使用接受ec_point*的函数。但是,每当我尝试使用通过普通ec_point传递的函数时,我都会收到错误消息:cannotusepk2(typeC.ec_scalar)astype*C.ucharinargumentto_Cfunc_secret_to_public我似乎找不到可以轻松转换它的方法。我也不想重构我的代码来接受ec